package com.dx.mes.filter;


import javax.servlet.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.net.URLDecoder;

public class AutoLoginFilter implements Filter{

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void destroy() {

    }

    // 拦截所有用户请求。
    // 首先判断session中是否存在用户名。
    // 若session中不存在用户名，则判断Cookies中是否存在用户名
    // 若Cookie中存在用户名，则将其放在session中。
    public void doFilter(ServletRequest req, ServletResponse resp,
                         FilterChain chain) throws IOException, ServletException {

        // 拦截用户请求
        HttpServletRequest request = (HttpServletRequest) req;
        // 判断session中，是否为空
        // 若session中user为空，
       // if (request.getSession().getAttribute("user") == null) {
            // 获取request中所有的Cookie，并放在数组中
            Cookie[] cs = request.getCookies();
            // 若Cookie不为空，则遍历所有的Cookie中所有的记录
            if (cs != null && cs.length > 0) {
                for (Cookie c : cs) {
                    String cName = c.getName();
                    // 查找当前用户的Cookie（此处为sso标识）
                    if (cName.equals("ssoName")) {
                        // 获取sso中对应的值，即：用户名userName
                        String userName1 = c.getValue();
                        String userName = URLDecoder.decode(userName1, "utf-8");
                        // 把用户名userName放在session中
                        request.getSession().setAttribute("user", userName);
                    }if (cName.equals("sso")) {
                        // 获取sso中对应的值，即：用户名userName
                        String userid1 = c.getValue();
                        String userid = URLDecoder.decode(userid1, "utf-8");
                        // 把用户名userName放在session中
                        request.getSession().setAttribute("userid", userid);
                    }
                }
            }
      //  }
        // 返回当前的请求
        chain.doFilter(request, resp);
    }

}
